Problem
最假女选手
Description
在刚刚结束的水题嘉年华的压轴节目放水大赛中,如愿以偿的得到了最假女选手的奖项。但是作为主办人的为了证明确实在放水,决定出一道基础题考察的姿势水平。给定一个长度为序列,编号从到。要求支持下面几种操作:
- 给一个区间加上一个数
- 把一个区间里小于的数变成
- 把一个区间里大于的数变成
- 求区间的和
- 求区间的最大值
- 求区间的最小值
Input
第一行一个整数表示序列长度
第二行个整数表示初始序列
第三行一个整数表示操作个数
接下来行,每行三或四个整数,第一个整数表示操作类型,接下来或表述操作数
Output
Sample Input
1 | 2 |
Sample Output
1 | 4 |
HINT
时,
或时,
标签:SegBeats
线段树
Solution
参见吉老师的冬令营课件。
像课件里那样维护最大值、最大值个数、严格次大值、最小值、最小值个数、严格次小值、区间加标记、区间和,丧心病狂分类更新即可。注意只有区间和需要开,这样即省空间又省常数。
好久没写过上行的代码了…
强烈建议先对拍再交,否则容易卡住评测…
Code
1 |
|